home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / mpss / cursor.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-07-20  |  4.1 KB  |  262 lines

  1.  
  2. /*******************************************************************************
  3. ********************************************************************************
  4. ********************************************************************************
  5.  
  6. PERMISSION TO COPY THIS SOFTWARE IS HEREBY GIVEN BY THE AUTHOR PROVIDED THAT
  7. THIS LEADING MESSAGE IS INCLUDED IN ALL OF THE RELEVANT SOURCE FILES.
  8.  
  9.         P. SCHMITZ, UNIVERSITY OF KEELE, MAY 1988.
  10.  
  11.  
  12. ********************************************************************************
  13. ********************************************************************************
  14. *******************************************************************************/
  15.  
  16. #include "header.h"
  17.  
  18. #define SPACE "                                                                                \n"
  19.  
  20. slaveoutc(c)
  21. char c;
  22. {
  23. write(1,&c,1);
  24. }
  25.  
  26. outc(c)
  27. char c;
  28. {
  29. write(v,&c,1);
  30. }
  31.  
  32. gettermcapentry(cl,cm,bon,boff)
  33. char *cl,*cm,*bon,*boff;
  34. {
  35. char *CL,*CM,*BON,*BOFF;
  36.     switch(tgetent(bp,getenv("TERM")))
  37.     {
  38.     case -1 :
  39.         fprintf(stderr,"Cannot open your termcap file!!\n");
  40.         return(0);
  41.         break;
  42.     case 0 : 
  43.         fprintf(stderr,"Your terminal has no entry in /etc/termcap..sorry!!\n");
  44.         return(0);
  45.         break;
  46.     case 1 :
  47. fprintf(stderr,"                 Found entry for automatic terminal option\n");
  48.         break;
  49.     default:
  50.         fprintf(stderr,"get_termcap_entry:Somethings wrong!!\n");
  51.         return(0);
  52.         break;
  53.     }
  54.  
  55.     termp=tbp;
  56.     if ((CM=tgetstr("cm",&termp))==NULL) 
  57.             {
  58.             fprintf(stderr,"cm problems.\n");
  59.             return(0);
  60.             }
  61.  
  62.     if ((CL=tgetstr("cl",&termp))==NULL) 
  63.             {
  64.             fprintf(stderr,"cl problems.\n");
  65.             return(0);
  66.             }
  67.  
  68.     BON=tgetstr("md",&termp);
  69.  
  70.     BOFF=tgetstr("me",&termp);
  71.     
  72.     strcpy(cl,CL);
  73.     strcpy(cm,CM);
  74.     strcpy(bon,BON);
  75.     strcpy(boff,BOFF);
  76.     return(1);
  77. }
  78.  
  79.  
  80. assignterminal(tty_type,cl,cm)
  81. int tty_type;
  82. char *cl,*cm;
  83. {
  84.     switch(tty_type)
  85.     {
  86.     case 1:
  87.         cm[0] = '\033';
  88.         cm[1] = 'Y';
  89.         cm[2] = 0+32;
  90.         cm[3] = 0+32;
  91.         cl[0] = '\033';
  92.         cl[1] = 'w';
  93.         break;
  94.     case 2: cm[0] = '\033';
  95.         cm[1] = '=';
  96.         cm[2] = 0+32;
  97.         cm[3] = 0+32;
  98.         cl[0] = '\033';
  99.         cl[1] = '*';
  100.         break;
  101.      case 3:
  102.         cm[0]='\033';
  103.         cm[1]='[';
  104.         cm[2]='0';
  105.         cm[3]='0';
  106.         cm[4]=';';
  107.         cm[5]='0';
  108.         cm[6]='0';
  109.         cm[7]='H';
  110.         cl[0]='\033';
  111.         cl[1]='[';
  112.         cl[2]='2';
  113.         cl[3]='J';
  114.         break;
  115.      case 4:
  116.         cm[0]='\033';
  117.         cm[1]='[';
  118.         cm[2]='0';
  119.         cm[3]='0';
  120.         cm[4]=';';
  121.         cm[5]='0';
  122.         cm[6]='0';
  123.         cm[7]='H';
  124.         cl[0]='N';
  125.         break;
  126.       default:
  127.         break;
  128.       }
  129. }
  130.  
  131. /***************************************************************************
  132. Position cursor routines!!!-> 1) VT200/ADDS 2)Televideo 910/905/ADM3 3) VT100
  133. 4)SUN's
  134. ****************************************************************************/
  135.  
  136. poscursslave(cm,tty_type,x,y)
  137. char *cm;
  138. int tty_type,x,y;
  139. {
  140. char *b;
  141. switch(tty_type){
  142.  case 0:
  143.     b=tgoto(cm,x,y);
  144.     tputs(b,1,slaveoutc);
  145.     break;    
  146.  case 1:
  147.     cm[2]=y+32;
  148.     cm[3]=x+32;
  149.     write(1,cm,4);
  150.     break;
  151.   case 2:
  152.     cm[2] = y+32;
  153.     cm[3] = x+32;
  154.     write(1,cm,4);
  155.     break;
  156.   case 3:
  157.   case 4:
  158.     ++y;
  159.     cm[5]=x/10+'0';
  160.     cm[6]=x%10+'0';
  161.     cm[2]=y/10+'0';
  162.     cm[3]=y%10+'0';
  163.     write(1,cm,10);
  164.     break;
  165.   default:
  166.     break;
  167.   }
  168. }
  169.  
  170. poscurs(cp,x,y)
  171. register struct player *cp;
  172. register int x,y;
  173. {
  174. char *b;
  175. switch(cp->tty_type){
  176.     
  177.  case 0:
  178.     v=cp->fd;
  179.     b=tgoto(cp->cm,x,y);
  180.     tputs(b,1,outc);
  181.     break;
  182.  case 1:
  183.     cp->cm[2]=y+32;
  184.     cp->cm[3]=x+32;
  185.     write(cp->fd,cp->cm,4);
  186.     break;
  187.   case 2:
  188.     cp->cm[2] = y+32;
  189.     cp->cm[3] = x+32;
  190.     write(cp->fd,cp->cm,4);
  191.     break;
  192.   case 3:
  193.   case 4:
  194.     ++y;
  195.     cp->cm[5]=x/10+'0';
  196.     cp->cm[6]=x%10+'0';
  197.     cp->cm[2]=y/10+'0';
  198.     cp->cm[3]=y%10+'0';
  199.     write(cp->fd,cp->cm,10);
  200.     break;
  201.   default:
  202.     break;
  203.   }
  204. }
  205.  
  206. newgame()
  207. {
  208. srand((time(0)%10));
  209. }
  210. /*
  211.  *beep() Routine to emit a beep
  212.  */
  213.  
  214. beep(cp)
  215. register struct player *cp;
  216. {
  217.  if (cp->beeping) 
  218.      write(cp->fd,"\7",1);
  219. }
  220.  
  221.  
  222.  
  223. /*
  224. *to clear the screen
  225. */
  226. clrscreen(cp)
  227. register struct player *cp;
  228. {
  229.  
  230. if (cp->tty_type==0)
  231.     {
  232.     v=cp->fd;
  233.     tputs(cp->cl,1,outc);
  234.     }
  235.     else
  236. {
  237. if (cp->cl[0]=='N')
  238.     {
  239.     for(i=0;i<25;++i) write(cp->fd,SPACE,81); 
  240.     } else
  241.     write(cp->fd,cp->cl,10);
  242. }
  243. }
  244.  
  245. clrscreenslave(cl,tty_type)
  246. char *cl;
  247. int tty_type;
  248. {
  249.  
  250. if (tty_type==0)
  251.     tputs(cl,1,slaveoutc);
  252.     else
  253.     {
  254.     if (cl[0]=='N')
  255.         {
  256.         for(i=0;i<27;++i) write(1,SPACE,81); 
  257.         } else
  258.         write(1,cl,10);
  259.     }
  260. }
  261.  
  262.